/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controladores;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import modelos.ModeloCategoria;
import modelos.ModeloIngrediente;
import modelos.ModeloProducto;
import modelos.ModeloTabla;
import vistas.VistaProducto;

/**
 *
 * @author usuario
 */
public class ControladorProducto implements ActionListener{

    private VistaProducto vista;
    private ModeloProducto modelo;
    private Vector <ModeloCategoria> categorias;
    private final Vector<ModeloIngrediente> ingredientes;

    public ControladorProducto(VistaProducto aThis) {
        vista=aThis;
        modelo= new ModeloProducto();
        categorias= new ModeloCategoria().listar();
        ingredientes = new  ModeloIngrediente().listar();
        categorias = new  ModeloCategoria().listar();
        buscarDescripciones();
        
    }

    public void buscarDescripciones(){
        Vector<String> descripciones = new Vector<String>();
        for (int i = 0; i < ingredientes.size(); i++)
            descripciones.add(ingredientes.elementAt(i).getDescripcion());
        vista.cargarComboIngrediente(descripciones);
        descripciones = new Vector<String>();
        for (int i = 0; i < categorias.size(); i++)
            descripciones.add(categorias.elementAt(i).getDescripcion());
        vista.cargarComboCategoria(descripciones);
    }

     public int buscarIdIngredientes(String descrpicion){
        for (int i = 0; i < ingredientes.size(); i++)
            if(ingredientes.elementAt(i).getDescripcion().equals(descrpicion))
                return ingredientes.elementAt(i).getId();
        return -1;
    }

     public int buscarIdCategorias(String descrpicion){
        for (int i = 0; i < categorias.size(); i++)
            if(categorias.elementAt(i).getDescripcion().equals(descrpicion))
                return categorias.elementAt(i).getId();
        return -1;
     }



    public void actionPerformed(ActionEvent ae) {
        if(ae.getActionCommand().equals("Registrar")){
            if(vista.validarVacios())
                if(vista.validarNumeros()){
                    modelo.setDescripcion(vista.getTxtDescripcion().getText());
                    modelo.setId(Integer.parseInt(vista.getTxtCodigo().getText()));
                    modelo.setStatus("A");
                    modelo.setPrecio(Float.parseFloat(vista.getTxtPrecio().getText()));
                    modelo.setPrecio(Float.parseFloat(vista.getTxtPrecio().getText()));
                    modelo.setId_categoria(buscarIdCategorias(vista.getTextoCmbCategoria()));
                    if(modelo.registar()){
                        Vector<String> v = new Vector<String>();
                        Vector<String> vAux= vista.getInfoTabla();
                        for (int i = 0; i < vAux.size(); i++) {
                            String dato= vAux.elementAt(i);
                            v.add(""+buscarIdIngredientes(dato.substring(0, dato.indexOf("|")))+"|"+dato.substring(dato.indexOf("|")+1,dato.length()));
                        }
                        modelo.registarIngredientes(v);
                        JOptionPane.showMessageDialog(new JFrame(),"El producto se ha registrado exitosamente","Burguer",JOptionPane.INFORMATION_MESSAGE);
                        vista.cancelar();
                    }
                    else
                        JOptionPane.showMessageDialog(new JFrame(),"El codigo o la descripcion ya se encuentran registrados ","Burguer",JOptionPane.INFORMATION_MESSAGE);
                }
               else
                    JOptionPane.showMessageDialog(new JFrame(),"Existen campos vacios","Burguer",JOptionPane.WARNING_MESSAGE);
            else
                JOptionPane.showMessageDialog(new JFrame(),"Valores numericos no pemitidos","Burguer",JOptionPane.WARNING_MESSAGE);

        }
            else if(ae.getActionCommand().equals("Consultar")){
                modelo.setId(Integer.parseInt(vista.getTxtCodigo().getText()));
                modelo.setStatus("A");
                if(modelo.consultar()){                    
                    vista.getTxtDescripcion().setText(modelo.getDescripcion());
                    vista.getTxtPrecio().setText(""+modelo.getPrecio());
                    vista.bloquear();
                    Vector<String> v = modelo.listarIngredientes();
                    for (int i = 0; i < v.size(); i++) {
                        vista.agregar(v.elementAt(i),false);
                    }
                    vista.agregar(modelo.verCategoria());
                    
                }
                else{
                    JOptionPane.showMessageDialog(new JFrame(),"El codigo ingresado no pertenece a ningun ingrediente","Burguer",JOptionPane.WARNING_MESSAGE);
                }
            }
            else if(ae.getActionCommand().equals("Generar")){
                modelo.conectar();
                vista.getTxtCodigo().setText(""+(modelo.contarRegistros("Ingrediente")+1));
                vista.getTxtCodigo().setEditable(false);
                modelo.desconectar();
            }
            else if(ae.getActionCommand().equals("Salir")){
                vista.hide();
            }
            else if(ae.getActionCommand().equals("Eliminar")){
                modelo.setId(Integer.parseInt(vista.getTxtCodigo().getText()));
                modelo.setStatus("A");
                if(modelo.eliminar()){
                        JOptionPane.showMessageDialog(new JFrame(),"El ingrediente ha sido eliminado exitosamente","Burguer",JOptionPane.INFORMATION_MESSAGE);
                        vista.cancelar();
                }
                else{
                    JOptionPane.showMessageDialog(new JFrame(),"El codigo ingresado no pertenece a ningun ingrediente","Burguer",JOptionPane.WARNING_MESSAGE);
                }
            }
            else if(ae.getActionCommand().equals("Mas")){
                vista.agregar(vista.getTextoCmbIngrediente()+"|"+vista.getTxtPorcion().getText(),true);

            }
             else if(ae.getActionCommand().equals("Menos")){
                vista.eliminar();
            }
            else{
                vista.cancelar();
            }
    }

}
